home *** CD-ROM | disk | FTP | other *** search
/ Supercompiler 1997 / SUPERCOMPILER97.iso / Delphi 3.0 / DATA.Z / dbweb.int < prev    next >
Encoding:
Text File  |  1997-01-30  |  6.8 KB  |  208 lines

  1. unit DBWeb;
  2.  
  3. interface
  4.  
  5. uses Windows, SysUtils, Classes, SyncObjs, HTTPApp, DB, DBTables;
  6.  
  7. type
  8.  
  9. { TWebSession }
  10.  
  11.   { defined in DBTables }
  12.   TWebSession = TSession;
  13.  
  14.   TDSTableProducer = class;
  15.  
  16. { TDSTableProducerEditor }
  17.  
  18.   TDSTableProducerEditor = class
  19.   public
  20.     constructor Create(DSTableProducer: TDSTableProducer);
  21.     destructor Destroy; override;
  22.     procedure Changed; virtual;
  23.     procedure PostChange; virtual;
  24.     property DSTableProducer: TDSTableProducer;
  25.     property DataSource: TDataSource;
  26.   end;
  27.  
  28. { THTTPDataLink }
  29.  
  30.   THTTPDataLink = class(TDataLink)
  31.   protected
  32.     procedure ActiveChanged; override;
  33.     procedure DataSetChanged; override;
  34.     procedure DataSetScrolled(Distance: Integer); override;
  35.     procedure FocusControl(Field: TFieldRef); override;
  36.     procedure EditingChanged; override;
  37.     procedure LayoutChanged; override;
  38.     procedure RecordChanged(Field: TField); override;
  39.     procedure UpdateData; override;
  40.     function  GetMappedIndex(ColIndex: Integer): Integer;
  41.   public
  42.     constructor Create(DSTableProducer: TDSTableProducer);
  43.     destructor Destroy; override;
  44.     function AddMapping(const FieldName: string): Boolean;
  45.     procedure ClearMapping;
  46.     procedure Modified;
  47.     procedure Reset;
  48.     property DefaultFields: Boolean;
  49.     property FieldCount: Integer;
  50.     property Fields[I: Integer]: TField;
  51.     property SparseMap: Boolean;
  52.   end;
  53.  
  54. { THTMLTableColumn }
  55.  
  56.   THTMLTableColumn = class(TCollectionItem)
  57.   protected
  58.     function GeTDSTableProducer: TDSTableProducer;
  59.     function GetDisplayName: string; override;
  60.   public
  61.     constructor Create(Collection: TCollection); override;
  62.     destructor Destroy; override;
  63.     procedure AssignTo(Dest: TPersistent); override;
  64.     procedure Update;
  65.     property Field: TField;
  66.     property DSTableProducer: TDSTableProducer;
  67.   published
  68.     property Align: THTMLAlign default haDefault;
  69.     property BgColor: THTMLBgColor;
  70.     property Custom: string;
  71.     property FieldName: string;
  72.     property Title: THTMLTableHeaderAttributes;
  73.     property VAlign: THTMLVAlign default haVDefault;
  74.   end;
  75.  
  76.   THTMLTableColumnClass = class of THTMLTableColumn;
  77.  
  78. { THTMLTableColumns }
  79.  
  80.   THTMLColumnState = (csDefault, csCustom);
  81.  
  82.   THTMLTableColumns = class(TCollection)
  83.   protected
  84.     function GetAttrCount: Integer; override;
  85.     function GetAttr(Index: Integer): string; override;
  86.     function GetItemAttr(Index, ItemIndex: Integer): string; override;
  87.     function GetOwner: TPersistent; override;
  88.     procedure Update(Item: TCollectionItem); override;
  89.   public
  90.     constructor Create(DSTableProducer: TDSTableProducer;
  91.       ColumnClass: THTMLTableColumnClass);
  92.     function  Add: THTMLTableColumn;
  93.     procedure RestoreDefaults;
  94.     procedure RebuildColumns;
  95.     property State: THTMLColumnState;
  96.     property DSTableProducer: TDSTableProducer;
  97.     property Items[Index: Integer]: THTMLTableColumn; default;
  98.   end;
  99.  
  100. { TDSTableProducer }
  101.  
  102.   THTMLCaptionAlignment = (caDefault, caTop, caBottom);
  103.  
  104.   TCreateContentEvent = procedure (Sender: TObject; var Continue: Boolean) of object;
  105.   THTMLGetTableCaptionEvent = procedure (Sender: TObject; var Caption: string;
  106.     var Alignment: THTMLCaptionAlignment) of object;
  107.   THTMLFormatCellEvent = procedure (Sender: TObject; CellRow, CellColumn: Integer;
  108.     var BgColor: THTMLBgColor; var Align: THTMLAlign; var VAlign: THTMLVAlign;
  109.     var CustomAttrs, CellData: string) of object;
  110.   THTMLDataSetEmpty = procedure (Sender: TObject; var Continue: Boolean) of object;
  111.  
  112.   TDSTableProducer = class(TCustomContentProducer)
  113.   protected
  114.     function AcquireLayoutLock: Boolean;
  115.     procedure BeginLayout;
  116.     procedure DefineFieldMap;
  117.     function DoCreateContent: Boolean;
  118.     procedure DoFormatCell(CellRow, CellColumn: Integer; var BgColor: THTMLBgColor;
  119.       var Align: THTMLAlign; var VAlign: THTMLVAlign;
  120.       var CustomAttrs, CellData: string); dynamic;
  121.     procedure DoGetCaption(var TableCaption: string;
  122.       var CaptionAlign: THTMLCaptionAlignment); dynamic;
  123.     procedure EndLayout;
  124.     function GetDataSet: TDataSet; virtual; abstract;
  125.     function GetDataSource: TDataSource;
  126.     procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  127.     procedure LayoutChanged;
  128.     procedure LinkActive(Value: Boolean);
  129.     procedure SetColumns(Value: THTMLTableColumns);
  130.     procedure SetDataSet(ADataSet: TDataSet); virtual; abstract;
  131.     procedure SetDataSource(Value: TDataSource);
  132.     function StoreColumns: Boolean;
  133.     property DataLink: THTTPDataLink;
  134.     property DataSource: TDataSource;
  135.     property InternalDataSource: TDataSource;
  136.     property OnCreateContent: TCreateContentEvent;
  137.     property OnFormatCell: THTMLFormatCellEvent;
  138.     property OnGetTableCaption: THTMLGetTableCaptionEvent;
  139.   public
  140.     constructor Create(AOwner: TComponent); override;
  141.     destructor Destroy; override;
  142.     procedure BeginUpdate;
  143.     procedure EndUpdate;
  144.     property Caption: string;
  145.     property CaptionAlignment: THTMLCaptionAlignment default caDefault;
  146.     property Columns: THTMLTableColumns;
  147.     property DataSet: TDataSet;
  148.     property Editor: TDSTableProducerEditor;
  149.     property Footer: TStrings;
  150.     property Header: TStrings;
  151.     property MaxRows: Integer default 20;
  152.     property RowAttributes: THTMLTableRowAttributes;
  153.     property TableAttributes: THTMLTableAttributes;
  154.   end;
  155.  
  156. { TQueryTableProducer }
  157.  
  158.   TQueryTableProducer = class(TDSTableProducer)
  159.   protected
  160.     function GetDataSet: TDataSet; override;
  161.     procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  162.     procedure SetDataSet(ADataSet: TDataSet); override;
  163.   public
  164.     function Content: string; override;
  165.   published
  166.     property Caption;
  167.     property CaptionAlignment;
  168.     property Columns;
  169.     property Footer;
  170.     property Header;
  171.     property MaxRows;
  172.     property Query: TQuery;
  173.     property RowAttributes;
  174.     property TableAttributes;
  175.     property OnCreateContent;
  176.     property OnFormatCell;
  177.     property OnGetTableCaption;
  178.   end;
  179.  
  180. { TDataSetTableProducer }
  181.  
  182.   TDataSetTableProducer = class(TDSTableProducer)
  183.   protected
  184.     function GetDataSet: TDataSet; override;
  185.     procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  186.     procedure SetDataSet(ADataSet: TDataSet); override;
  187.   public
  188.     function Content: string; override;
  189.   published
  190.     property Caption;
  191.     property CaptionAlignment;
  192.     property Columns;
  193.     property Footer;
  194.     property Header;
  195.     property MaxRows;
  196.     property DataSet;
  197.     property RowAttributes;
  198.     property TableAttributes;
  199.     property OnCreateContent;
  200.     property OnFormatCell;
  201.     property OnGetTableCaption;
  202.   end;
  203.  
  204. function HtmlTable(DataSet: TDataSet; DataSetHandler: TDSTableProducer;
  205.   MaxRows: Integer): string;
  206.  
  207. implementation
  208.